import time


class LocatorExists:
    """判断某个元素是否存在"""

    @staticmethod
    def is_locator_visible(locator, timeout=5000):
        """
        检查元素是否在指定的超时时间内可见。

        参数:
        locator: 要检查的元素的定位器。
        timeout (int): 最大等待时间（毫秒）。

        返回:
        bool: 如果元素在超时时间内变得可见，则返回 True，否则返回 False。
        """
        start_time = time.time()
        end_time = start_time + timeout / 1000

        while time.time() < end_time:
            if locator.is_visible():
                return True
            time.sleep(1)  # 等待一小段时间然后重试

        return False

    @classmethod
    def is_button_visible(cls, page, locator_text="确 定", timeout=30000):
        """判断某个按钮是否可见，如果可见则点击"""
        locator = page.get_by_role("button", name=locator_text)
        if cls.is_locator_visible(locator, timeout):
            locator.click()

    @classmethod
    def is_dialog_button_visible(cls, page, locator_text="确 定", timeout=30000):
        """判断弹窗中某个按钮是否可见，如果可见则点击"""
        locator = page.get_by_role("dialog").get_by_role("button", name=locator_text)
        if cls.is_locator_visible(locator, timeout):
            locator.click()
